#ifndef __BSP_DHT11_H__
#define __BSP_DHT11_H__

#include "pinctrl.h"
#include "soc_osal.h"
#include "gpio.h"

// DHT11 数据类型定义
typedef struct
{
	uint8_t humi_high8bit; // 原始数据：湿度高8位
	uint8_t humi_low8bit;  // 原始数据：湿度低8位
	uint8_t temp_high8bit; // 原始数据：温度高8位
	uint8_t temp_low8bit;  // 原始数据：温度高8位
	uint8_t check_sum;	   // 校验和
	float humidity;		   // 实际湿度
	float temperature;	   // 实际温度
} DHT11_Data_TypeDef;

// DHT11控制接口
/**
 * @brief  初始化DHT11设备。
 * @param  [in] pin DHT11设备使用的GPIO引脚， 参考 @ref pin_t 。
 * @retval ERRCODE_SUCC 成功。
 * @retval Other        失败，参考 @ref errcode_t 。
 */
errcode_t bsp_dht11_init(pin_t pin);

/**
 * @brief  DHT11读取温湿度数据。
 * @param  [out] DHT11_Data 温湿度数据结构体。 参考 @ref DHT11_Data_TypeDef 。
 * @retval ERRCODE_SUCC 成功。
 * @retval Other        失败，参考 @ref errcode_t 。
 */
errcode_t bsp_dht11_read_TempAndHumidity(DHT11_Data_TypeDef *DHT11_Data);

#endif // !__BSP_DHT11_H__
